# from fastapi import FastAPI
# from apscheduler.schedulers.background import BackgroundScheduler
# from datetime import datetime
# import time
#
# # 1. 初始化FastAPI应用
# app = FastAPI()
#
# # 2. 初始化APScheduler调度器（使用后台线程执行任务）
# scheduler = BackgroundScheduler()
#
#
# # 3. 定义定时任务函数（示例：打印当前时间）
# def print_current_time():
#     current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
#     print(f"定时任务执行：当前时间 {current_time}")
#
#
# def heavy_task():
#     """示例：耗时任务（演示调度器的异步执行）"""
#     print("开始执行耗时任务...")
#     time.sleep(3)  # 模拟耗时操作
#     print("耗时任务执行完成")
#
#
# # 4. 向调度器添加任务（配置触发规则）
# def add_jobs():
#     # 任务1：每隔5秒执行一次（interval触发）
#     scheduler.add_job(
#         func=print_current_time,
#         trigger="interval",  # 间隔触发
#         seconds=5,  # 间隔5秒
#         id="time_printer"  # 任务唯一ID（用于后续操作，如删除）
#     )
#
#     # 任务2：每天12:30执行（cron触发，类似Linux的crontab）
#     scheduler.add_job(
#         func=heavy_task,
#         trigger="cron",  # CRON表达式触发
#         hour=12,
#         minute=30,
#         id="daily_task"
#     )
#
#     # 任务3：在特定时间执行一次（date触发）
#     # scheduler.add_job(
#     #     func=print_current_time,
#     #     trigger="date",  # 特定时间触发
#     #     run_date=datetime(2025, 12, 31, 23, 59, 59),  # 2025年12月31日23:59:59
#     #     id="specific_time_task"
#     # )
#
#
# # 5. 利用FastAPI生命周期事件管理调度器
# @app.on_event("startup")
# def startup_event():
#     """应用启动时，启动调度器并添加任务"""
#     add_jobs()
#     scheduler.start()
#     print("调度器已启动")
#
#
# @app.on_event("shutdown")
# def shutdown_event():
#     """应用关闭时，关闭调度器"""
#     scheduler.shutdown()
#     print("调度器已关闭")
#
#
# # 测试接口（可选）
# @app.get("/")
# def read_root():
#     return {"message": "FastAPI定时任务示例运行中"}
#
#
# import uvicorn
#
# if __name__ == '__main__':
#     uvicorn.run("t:app", host="127.0.0.1", port=8001, reload=True)